﻿using System;
using System.Collections.Generic;

namespace Fabrication.Tests.TestClasses
{
    internal class Parent
    {
        public Parent()
        {
            Id = Guid.NewGuid();
        }

        public Guid Id { get; private set; }
        public string Name { get; set; }
        public LinkedChild Child { get; set; }
    }

    internal class LinkedChild
    {
        public Guid ParentId { get; set; }
        public string ParentName { get; set; }
    }

    internal class ChildClass
    {
        public string Name { get; set; }
    }

    internal class ParentClass
    {
        public ChildClass Child { get; set; }
    }

    internal class DirectRecursive
    {
        public DirectRecursive InnerDirect { get; set; }
    }

    internal class IndirectRecursive
    {
        public InnerClass InnerIndirect { get; set; }

        public class InnerClass
        {
            public IndirectRecursive InnerDirect { get; set; }
        }
    }

    internal class ParentWithPropertyOfSameName
    {
        public List<TypeOfRootProperty> SamePropertyName { get; set; }
        public ChildWithPropertyOfSameName Child { get; set; }
    }

    internal class ChildWithPropertyOfSameName
    {
        public List<TypeOfChildProperty> SamePropertyName { get; set; }
    }

    internal class TypeOfRootProperty { }

    internal class TypeOfChildProperty { }
}
